Network architectures include multiple services and/or applications that operate on different machines (computing devices) that are connected via a network. Some services or applications may rely on other services and/or applications to operate. However, machines, and services and applications that operate on the machines, may occasionally become unavailable (e.g., when a machine loses power, an application crashes, a network connection to the machine is lost, etc.).
Conventional network architectures can determine whether a machine or a service operating on a machine is unreachable (cannot be communicated with). However, conventional network architectures cannot distinguish between a network failure (e.g., a network partition) or a failure of the machine or service. Nor do conventional network architectures enable machines and services to communicate with one another across network partitions.